range: Avoid miscalculating highlight allocation
authorMatthias Clasen <mclasen@redhat.com>
Sat, 26 Mar 2016 14:50:00 +0000 (10:50 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 26 Mar 2016 14:50:00 +0000 (10:50 -0400)
The slider gadget may be turned invisible as side-effect of
gtk_range_calc_slider(). If that happens,
gtk_css_gadget_get_content_allocation() returns { 0, 0, 0, 0},
which leads us to calculate a negative allocation for the highlight
node. Avoid this, by just reusing our already calculated slider
allocation in this case (it is not technically the same as the
content, allocation, but the difference hardly matter here.

https://bugzilla.gnome.org/show_bug.cgi?id=764022

gtk/gtkrange.c

index 137070318ea2cd7290594f7de3b6b451efc57b60..62d8f9d85683635ca5b78f7332354f8dd0ab7a81 100644 (file)
@@ -2006,8 +2006,8 @@ gtk_range_allocate_trough (GtkCssGadget        *gadget,
     {
       GtkAllocation highlight_alloc, highlight_clip;
 
-      gtk_css_gadget_get_content_allocation (priv->slider_gadget,
-                                             &slider_alloc, NULL);
+      if (gtk_css_gadget_get_visible (priv->slider_gadget))
+        gtk_css_gadget_get_content_allocation (priv->slider_gadget, &slider_alloc, NULL);
       highlight_alloc = *allocation;
 
       if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)